<template>
  <div class="container">
    <!-- accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" -->
      <div style="display: flex">
        <el-upload
          ref="upload"
          action="action"
          accept=".xls,.xlsx"
          :show-file-list="false"
          :http-request="handlehttpRequest"
          :on-change="onUploadChange"
        >
          <el-button
            size="small"
            type="primary"
            icon="el-icon-upload"
            >导入Excel</el-button
          >
        </el-upload>
        <el-button
          style="margin-left: 20px"
          size="small"
          icon="el-icon-download"
          @click="handleDownload"
          >导出Excel</el-button
        >
        <el-button
          style="margin-left: 20px"
          size="small"
          icon="el-icon-delete"
          @click="handleClear"
          >清空数据</el-button
        >
        <el-button
          style="margin-left: 20px"
          size="small"
          type="primary"
          @click="handleSave"
          >保存数据</el-button
        >
      </div>
      <div>数据库现有 {{allproject}} 个项目。总共发现{{oldproject + newproject}} 条数据。导入的数据有 {{oldproject}} 条和数据库匹配。有 {{newproject}} 条数据是新项目。</div>
      <!-- <el-table
        :data="list"
        border
        style="width: 100%; margin-top: 20px;"
        max-height="500"
      >
        <template v-if="list && list.length > 0">
          <el-table-column
            v-for="item in Object.keys(list[0] || {})"
            :prop="item"
            :label="item"
            :key="item"
          >
          </el-table-column>
        </template>
      </el-table> -->
      <pre>{{list}}</pre>
    </div>
</template>

<script>
import { readExcelToJson, saveJsonToExcel } from './utils.js'
// import { tableData } from './data.js'

export default {
  data() {
    return {
      // 导入的文件
      file: null,
      // 导入的数据
      list: [],
      // 数据库读取的数据对象
      databaselist: [],
      // 现有项目条数
      allproject: 0,
      // 匹配到数据条数
      oldproject: 0,
      // 新的数据条数
      newproject: 0
    }
  },
  created() {
    // 页面访问权限判断
    // this.menuright()
    this.getAllProjectsList()
    // this.list = tableData
    // var bianhao = 'ICT-WZ-201812-003'
    // console.log(parseInt(bianhao.split('-')[2].slice(0, -2)))
  },
  methods: {
    async getAllProjectsList() {
      // console.log('程序运行到这里了')
      // 获取项目列表
      const { data: res } = await this.$http.get('projects')
      if (res.meta.status !== 200) {
        return this.$message.error('获取所有工程数据列表失败！')
      }
      this.databaselist = res.data
      this.allproject = this.databaselist.length
      console.log('数据库中所有项目信息', this.databaselist.length)
    },
    handlehttpRequest() {},
    // 读取文件为json数据
    onUploadChange(file) {
      // console.log(file)
      this.file = file
      readExcelToJson(file).then((res) => {
        // console.log('res', res)
        // console.log('主键', Object.keys(res[0]))
        // ------------------
        // 过滤掉不需要的数据
        // res.forEach(item => {
        //   this.list.push({
        //     // 委托日期
        //     entrustTime: item.委托日期,
        //     // 项目名称
        //     projectName: item.项目名称,
        //     // 区县
        //     area: item.区县,
        //     // ICT编号
        //     mobileProjectNo: item.ICT编号,
        //     // 预算含税总额(元)(含加成)
        //     SettlementMoney: item['预算含税总额(元)(含加成)'],
        //     // SettlementMoney: Object.keys(item)[22],//键
        //     // settlementMoney: Object.values(item)[22],//值
        //     // 母公司项目经理
        //     projectManager: item.母公司项目经理,
        //     // 服务经理
        //     serviceManager: item.服务经理
        //   })
        //   // console.log('this.list', this.list)
        //   // console.log(Object.keys(item))
        // })
        // -------------------
        // this.list = this.list.contact(this.list, this.list)
        // this.list = res
        // console.log('this.list', this.list)
        // List<String> resultList = new ArrayList<>(array.length)
        // this.list = res
        // console.log(res)
        // console.log(Object.keys[res])
        // 循环显示主键
        // this.list.forEach(item => {
        //   console.log(Object.keys(item))
        // })
        // // -------------过滤掉老旧数据------------------------
        // var res2 = []
        // res.forEach((item, index, arr) => {
        //   // console.log(item['ICT编号'])
        //   if (parseInt(item['ICT编号'].split('-')[2].slice(0, -2)) > 2020) {
        //     res2.push(item)
        //   }
        // })
        // // parseInt(bianhao.split('-')[2].slice(0, -2))
        // // --------------end--------------------------
        // --------------把ict编号对应上和对应不上的分离开-----------------------
        let oldarr = []
        let newarr = []
        let allarr = []
        res.map((item, index, arr) => {
          if (item['实际开工时间'] === '/') {
            item['实际开工时间'] = null
          }
          if (item['实际上线时间'] === '/') {
            item['实际上线时间'] = null
          }
          allarr.push({
            ProjectName: item['项目名称'],
            MobileProjectNo: item['ICT编号'],
            Area: item['区县'],
            ServiceManager: item['服务经理'],
            ProjectManager: item['母公司项目经理'],
            BudgetAmount: item['预算含税总额(元)(含加成)'],
            EntrustTime: item['委托完成日期'],
            Sfjs: item['是否结束'],
            Sfzt: item['是否直拓'],
            Qqjcgszc: item['前期集成公司支撑'],
            Sffb: item['是否发布'],
            Xmbh: item['项目编号'],
            Qy: item['区域'],
            Xmjl: item['项目经理'],
            Nlbm: item['能力部门'],
            Jsfs: item['建设方式'],
            Swhzms: item['商务合作模式'],
            Sfxmsj: item['是否项目审计'],
            Sfcgkjht: item['是否采购框架合同'],
            SfnrPMOgl: item['是否纳入PMO管理'],
            Jsms: item['建设模式'],
            Zcms: item['支出模式'],
            Sfwg: item['是否外购'],
            Sfcwg: item['是否纯外购'],
            Ywjcje: item['云网集成金额(元)'].toString(),
            Cpyfje: item['产品研发金额(元)'].toString(),
            Cpzcje: item['产品支撑金额(元)'].toString(),
            Ptszyy: item['平台数智运营金额(元)'].toString(),
            Zbje: item['中标金额(元)'],
            Htqyje: item['合同签约金额(元)'],
            Ylxsrje: item['预立项收入金额(元)'],
            Ylxcbje: item['预立项成本金额(元)'],
            Wtrq: item['委托日期'],
            Zbrq: item['中标日期'],
            Zbwtsc: item['中标委托时长(自然日)'],
            Yjhy: item['一级行业'],
            Erhy: item['二级行业'],
            Xmfl: item['项目分类'],
            Xmlx: item['项目类型(售中)'],
            Zdssn: item['站点数(室内)'],
            Zdssw: item['站点数(室外)'],
            Ctph: item['CT配合'],
            Xmjd: item['项目阶段'],
            Ctjd: item['CT进度(%)'],
            Ctyit: item['CT与IT配合度'],
            Zhyy: item['滞后原因'],
            Yqzysj: item['要求终验时间'],
            Xmtdzjrq: item['项目团队组建日期'],
            Qdsj: item['启动时间'],
            Ssfaxttjsj: item['实施方案系统提交时间'],
            Ssfatjsj: item['实施方案提交时间'],
            Ssfaqrsj: item['实施方案确认时间'],
            Jhkgsj: item['计划开工时间'],
            Kgyqts: item['开工逾期天数'],
            Sjkgsj: item['实际开工时间'],
            Dyccgwcsj: item['第一次采购完成时间'],
            Cgwcsj: item['采购完成时间'],
            Jhdhsj: item['计划到货时间'],
            Dhsj: item['到货时间'],
            Xmjdsj: item['项目交底时间'],
            Xmjdhysj: item['项目交底会议时间'],
            Jhsxsj: item['计划上线时间'],
            Sxqyts: item['上线逾期天数'],
            Sjsxsj: item['实际上线时间'],
            Yzcysj: item['业主初验时间'],
            Mgssjcysj: item['母公司实际初验时间'],
            Yzzysj: item['业主终验时间'],
            Mgsjhzysj: item['母公司计划终验时间'],
            Zyyqts: item['终验逾期天数'],
            Mgssjzysj: item['母公司实际终验时间'],
            Jhzwsj: item['计划转维时间'],
            Zwwcsj: item['转维完成时间'],
            Gxsj: item['更新时间'],
            Sfyxmsjjdpp: item['是否与项目实际阶段匹配'],
            Bz: item['备注'],
            Jcgsjsdw: item['集成公司建设单位'],
            Xqhtlxkssj: item['前向合同履行开始时间'],
            Xqhtlxjssj: item['前向合同履行结束时间'],
            Zwzt: item['转维状态'],
            Whjssj: item['维护结束时间'],
            Whzt: item['维护状态'],
            Whlx: item['维护类型'],
            Whzq: item['维护周期（月）'],
            Zbzq: item['质保周期（月）']
          })
          // console.log('arr', arr.length)
          // 现有数据和没有的数据分开保存到数组里
          if (this.databaselist.find(o => o.mobileProjectNo === item['ICT编号'])) {
            oldarr.push({
              ProjectName: item['项目名称'],
              MobileProjectNo: item['ICT编号'],
              Area: item['区县'],
              ServiceManager: item['服务经理'],
              ProjectManager: item['母公司项目经理'],
              BudgetAmount: item['预算含税总额(元)(含加成)'],
              EntrustTime: item['委托完成日期'],
              Sfjs: item['是否结束'],
              Sfzt: item['是否直拓'],
              Qqjcgszc: item['前期集成公司支撑'],
              Sffb: item['是否发布'],
              Xmbh: item['项目编号'],
              Qy: item['区域'],
              Xmjl: item['项目经理'],
              Nlbm: item['能力部门'],
              Jsfs: item['建设方式'],
              Swhzms: item['商务合作模式'],
              Sfxmsj: item['是否项目审计'],
              Sfcgkjht: item['是否采购框架合同'],
              SfnrPMOgl: item['是否纳入PMO管理'],
              Jsms: item['建设模式'],
              Zcms: item['支出模式'],
              Sfwg: item['是否外购'],
              Sfcwg: item['是否纯外购'],
              Ywjcje: item['云网集成金额(元)'].toString(),
              Cpyfje: item['产品研发金额(元)'].toString(),
              Cpzcje: item['产品支撑金额(元)'].toString(),
              Ptszyy: item['平台数智运营金额(元)'].toString(),
              Zbje: item['中标金额(元)'],
              Htqyje: item['合同签约金额(元)'],
              Ylxsrje: item['预立项收入金额(元)'],
              Ylxcbje: item['预立项成本金额(元)'],
              Wtrq: item['委托日期'],
              Zbrq: item['中标日期'],
              Zbwtsc: item['中标委托时长(自然日)'],
              Yjhy: item['一级行业'],
              Erhy: item['二级行业'],
              Xmfl: item['项目分类'],
              Xmlx: item['项目类型(售中)'],
              Zdssn: item['站点数(室内)'],
              Zdssw: item['站点数(室外)'],
              Ctph: item['CT配合'],
              Xmjd: item['项目阶段'],
              Ctjd: item['CT进度(%)'],
              Ctyit: item['CT与IT配合度'],
              Zhyy: item['滞后原因'],
              Yqzysj: item['要求终验时间'],
              Xmtdzjrq: item['项目团队组建日期'],
              Qdsj: item['启动时间'],
              Ssfaxttjsj: item['实施方案系统提交时间'],
              Ssfatjsj: item['实施方案提交时间'],
              Ssfaqrsj: item['实施方案确认时间'],
              Jhkgsj: item['计划开工时间'],
              Kgyqts: item['开工逾期天数'],
              Sjkgsj: item['实际开工时间'],
              Dyccgwcsj: item['第一次采购完成时间'],
              Cgwcsj: item['采购完成时间'],
              Jhdhsj: item['计划到货时间'],
              Dhsj: item['到货时间'],
              Xmjdsj: item['项目交底时间'],
              Xmjdhysj: item['项目交底会议时间'],
              Jhsxsj: item['计划上线时间'],
              Sxqyts: item['上线逾期天数'],
              Sjsxsj: item['实际上线时间'],
              Yzcysj: item['业主初验时间'],
              Mgssjcysj: item['母公司实际初验时间'],
              Yzzysj: item['业主终验时间'],
              Mgsjhzysj: item['母公司计划终验时间'],
              Zyyqts: item['终验逾期天数'],
              Mgssjzysj: item['母公司实际终验时间'],
              Jhzwsj: item['计划转维时间'],
              Zwwcsj: item['转维完成时间'],
              Gxsj: item['更新时间'],
              Sfyxmsjjdpp: item['是否与项目实际阶段匹配'],
              Bz: item['备注'],
              Jcgsjsdw: item['集成公司建设单位'],
              Xqhtlxkssj: item['前向合同履行开始时间'],
              Xqhtlxjssj: item['前向合同履行结束时间'],
              Zwzt: item['转维状态'],
              Whjssj: item['维护结束时间'],
              Whzt: item['维护状态'],
              Whlx: item['维护类型'],
              Whzq: item['维护周期（月）'],
              Zbzq: item['质保周期（月）']
              // mobileProjectNo: this.databaselist.find(o => o.mobileProjectNo === item['ICT编号']).mobileProjectNo
            })
          } else {
            newarr.push({
              ProjectName: item['项目名称'],
              MobileProjectNo: item['ICT编号'],
              Area: item['区县'],
              ServiceManager: item['服务经理'],
              ProjectManager: item['母公司项目经理'],
              BudgetAmount: item['预算含税总额(元)(含加成)'],
              EntrustTime: item['委托完成日期'],
              Sfjs: item['是否结束'],
              Sfzt: item['是否直拓'],
              Qqjcgszc: item['前期集成公司支撑'],
              Sffb: item['是否发布'],
              Xmbh: item['项目编号'],
              Qy: item['区域'],
              Xmjl: item['项目经理'],
              Nlbm: item['能力部门'],
              Jsfs: item['建设方式'],
              Swhzms: item['商务合作模式'],
              Sfxmsj: item['是否项目审计'],
              Sfcgkjht: item['是否采购框架合同'],
              SfnrPMOgl: item['是否纳入PMO管理'],
              Jsms: item['建设模式'],
              Zcms: item['支出模式'],
              Sfwg: item['是否外购'],
              Sfcwg: item['是否纯外购'],
              Ywjcje: item['云网集成金额(元)'].toString(),
              Cpyfje: item['产品研发金额(元)'].toString(),
              Cpzcje: item['产品支撑金额(元)'].toString(),
              Ptszyy: item['平台数智运营金额(元)'].toString(),
              Zbje: item['中标金额(元)'],
              Htqyje: item['合同签约金额(元)'],
              Ylxsrje: item['预立项收入金额(元)'],
              Ylxcbje: item['预立项成本金额(元)'],
              Wtrq: item['委托日期'],
              Zbrq: item['中标日期'],
              Zbwtsc: item['中标委托时长(自然日)'],
              Yjhy: item['一级行业'],
              Erhy: item['二级行业'],
              Xmfl: item['项目分类'],
              Xmlx: item['项目类型(售中)'],
              Zdssn: item['站点数(室内)'],
              Zdssw: item['站点数(室外)'],
              Ctph: item['CT配合'],
              Xmjd: item['项目阶段'],
              Ctjd: item['CT进度(%)'],
              Ctyit: item['CT与IT配合度'],
              Zhyy: item['滞后原因'],
              Yqzysj: item['要求终验时间'],
              Xmtdzjrq: item['项目团队组建日期'],
              Qdsj: item['启动时间'],
              Ssfaxttjsj: item['实施方案系统提交时间'],
              Ssfatjsj: item['实施方案提交时间'],
              Ssfaqrsj: item['实施方案确认时间'],
              Jhkgsj: item['计划开工时间'],
              Kgyqts: item['开工逾期天数'],
              Sjkgsj: item['实际开工时间'],
              Dyccgwcsj: item['第一次采购完成时间'],
              Cgwcsj: item['采购完成时间'],
              Jhdhsj: item['计划到货时间'],
              Dhsj: item['到货时间'],
              Xmjdsj: item['项目交底时间'],
              Xmjdhysj: item['项目交底会议时间'],
              Jhsxsj: item['计划上线时间'],
              Sxqyts: item['上线逾期天数'],
              Sjsxsj: item['实际上线时间'],
              Yzcysj: item['业主初验时间'],
              Mgssjcysj: item['母公司实际初验时间'],
              Yzzysj: item['业主终验时间'],
              Mgsjhzysj: item['母公司计划终验时间'],
              Zyyqts: item['终验逾期天数'],
              Mgssjzysj: item['母公司实际终验时间'],
              Jhzwsj: item['计划转维时间'],
              Zwwcsj: item['转维完成时间'],
              Gxsj: item['更新时间'],
              Sfyxmsjjdpp: item['是否与项目实际阶段匹配'],
              Bz: item['备注'],
              Jcgsjsdw: item['集成公司建设单位'],
              Xqhtlxkssj: item['前向合同履行开始时间'],
              Xqhtlxjssj: item['前向合同履行结束时间'],
              Zwzt: item['转维状态'],
              Whjssj: item['维护结束时间'],
              Whzt: item['维护状态'],
              Whlx: item['维护类型'],
              Whzq: item['维护周期（月）'],
              Zbzq: item['质保周期（月）']
              // mobileProjectNo: this.databaselist.find(o => o.mobileProjectNo === item['ICT编号']).mobileProjectNo
            })
          }
        })
        this.list = allarr
        console.log('this.list', this.list)
        this.oldproject = oldarr.length
        this.newproject = newarr.length
        console.log('oldarr平台中已有的项目编号', oldarr)
        console.log('newarr平台中没有的项目编号', newarr)
        // --------------end--------------------------
        // // --------------将ict编号对得上的数据，结算金额 和 预算含税总额(元)(含加成) 比较下，差距大的列出来----------------------
        // var buxingdeng = 0 // 结算金额 和 预算含税总额(元)(含加成) 不相等的个数
        // // 遍历导入的数据和数据库里的数据进行比对，分成2个新的数组一个是已有项目的数组一个是新的项目数组
        // res.forEach((item, index, arr) => {
        //   // 如果数据里查询到和导入数据编号相等，就把该条数据添加到oldarr数组里
        //   if (this.databaselist.find(o => o.mobileProjectNo === item['ICT编号'])) {
        //     // oldarr.push({
        //     //   projectName: item['项目名称'],
        //     //   mobileProjectNo: item['ICT编号'].trim()
        //     //   // mobileProjectNo: this.databaselist.find(o => o.mobileProjectNo === item['ICT编号']).mobileProjectNo
        //     // })
        //     let onedata = this.databaselist.find(o => o.mobileProjectNo === item['ICT编号'])
        //     // console.log('onedata', onedata)
        //     // ----------
        //     // console.log('item', item)
        //     // for (let key in obj) {
        //     //     console.log(key, obj[key])
        //     // }
        //     // ----------
        //     // item的属性名称遍历循环
        //     Object.keys(item).forEach(key => {
        //       // console.log('key', key)
        //       // 如何属性名称和等于项目经理
        //       if (key === '项目经理') {
        //         // console.log('item[key]', item[key])
        //         // 将属性值比对，如果不相等就给属性值做标记
        //         if (item[key] !== onedata.serviceManager) {
        //           item[key] = '旧的值: ' + onedata.serviceManager + '。新的值: ' + item['项目经理']
        //         }
        //       }
        //       // 如何属性名称等于母公司项目经理
        //       if (key === '母公司项目经理') {
        //         if (item[key] !== onedata.projectManager) {
        //           item[key] = '旧的值: ' + onedata.projectManager + '。新的值: ' + item['母公司项目经理']
        //         }
        //       }
        //       // 如何属性名称等于预算含税总额(元)(含加成)
        //       if (key === '预算含税总额(元)(含加成)') {
        //         // 如果 预算含税总额(元)(含加成) 和 结算金额 数据相差过大 就把过大的数据加到数组里显示
        //         if (Math.abs(parseFloat(item[key]) - onedata.settlementMoney) > 1) {
        //           item[key] = '旧的值: ' + onedata.settlementMoney + '。新的值: ' + item['预算含税总额(元)(含加成)']
        //           buxingdeng = buxingdeng + 1
        //           oldarr.push({
        //             projectName: item['项目名称'],
        //             mobileProjectNo: item['ICT编号'].trim(),
        //             SettlementMoney: item[key]
        //             // 还没写完
        //             // mobileProjectNo: this.databaselist.find(o => o.mobileProjectNo === item['ICT编号']).mobileProjectNo
        //           })
        //         }
        //       }
        //       // 如何属性名称等于项目名称
        //       if (key === '项目名称') {
        //         if (item[key] !== onedata.projectName) {
        //           item[key] = '旧的值: ' + onedata.projectName + '。新的值: ' + item['项目名称']
        //         }
        //       }
        //       // 如何属性名称等于委托完成日期
        //       if (key === '委托完成日期') {
        //         if (item[key] !== onedata.entrustTime) {
        //           item[key] = '旧的值: ' + onedata.entrustTime + '。新的值: ' + item['委托完成日期']
        //         }
        //       }
        //     })
        //   // 如果数据里未查询到和导入数据编号相等，就把该条数据添加到newarr数组里
        //   } else {
        //     newarr.push({
        //       projectName: item['项目名称'],
        //       mobileProjectNo: item['ICT编号']
        //       // mobileProjectNo: this.databaselist.find(o => o.mobileProjectNo === item['ICT编号']).mobileProjectNo
        //     })
        //     item['ICT编号'] = '新的值: ' + item['ICT编号']
        //   }
        // })
        // this.list = oldarr
        // console.log('this.list', this.list)
        // console.log('oldarr平台中已有的项目编号', oldarr)
        // console.log('newarr平台中没有的项目编号', newarr)
        // console.log('预算含税总额(元)(含加成)和数据库里结算金额对不上的条数有', buxingdeng)
        // // ---------------------------end-------------------------------
      })
    },
    handleDownload() {
      saveJsonToExcel(this.list, 'data.xlsx')
    },
    handleClear() {
      this.list = null
    },
    async handleSave() {
      const { data: res } = await this.$http.post('addprojects', this.list)
      if (res.meta.status !== 200) return this.$message.error('添加失败！')
      console.log('导入成功返回的结果', res)
      this.$message.success('导入项目过程表成功！')
    }
    // dateFormat: function (row, column) {
    //   var date = row[column.property]
    //   if (date === undefined) {
    //     return ''
    //   }
    //   return moment(date).format('YYYY-MM-DD')
    // }
  }
}
</script>

<style>
.container {
  width: 96%;
  /* height: 400px; */
  margin: 0 auto;
  padding: 20px;
  background: #fff;

}
</style>
